package pckDao;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import pckEntidad.Usuario;
import pckUtil.Conexion;

public class UsuarioDao implements Serializable {

    private Conexion oConexion=new Conexion();
    private Usuario oUsuario;
    private List<Usuario> lisUsuario=null;

   public Usuario obtener(String codigo) {
         String sql = "select * from tblUsuario where idUsua=?";
        try {
            PreparedStatement pst = oConexion.getConnection().prepareStatement(sql);                
            pst.setString(1, codigo);
            ResultSet rst = pst.executeQuery();
            
            while(rst.next()){
                oUsuario=new Usuario();
                oUsuario.setIdusua(rst.getString(1));
                oUsuario.setNombusu(rst.getString(2));
                oUsuario.setPassusu(rst.getString(3));
                oUsuario.setEstausu(rst.getString(4));
            }
            return  oUsuario;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
         return null;
     }
   
   
   public void insertar(Usuario oUsu){
         String sql = "{call sping_Usuario(?,?,?)}";
         CallableStatement cst;
        try {
            cst = oConexion.getConnection().prepareCall(sql);
            cst.setString(1, oUsu.getNombusu());
            cst.setString(2, oUsu.getPassusu());
            cst.setString(3, oUsu.getEstausu());
            cst.execute();            
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }   
     }
    
    
    public List<Usuario> listar(){
    String sql = "{call splis_Usuario}";
        try {
            CallableStatement cst = oConexion.getConnection().prepareCall(sql);
            ResultSet rst = cst.executeQuery();
            lisUsuario= new ArrayList<Usuario>();
            while(rst.next()){
                oUsuario= new Usuario();
                oUsuario.setIdusua(rst.getString(1));
                oUsuario.setNombusu(rst.getString(2));  
                oUsuario.setPassusu(rst.getString(3));
                oUsuario.setEstausu(rst.getString(4));
                lisUsuario.add(oUsuario);
            }
            return  lisUsuario;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
         return null;
     }
    
    
    public void actualizar( Usuario oUsu){
        try {
            String sql = "{call spact_tblUsuario(?,?,?)}";
            CallableStatement cst = oConexion.getConnection().prepareCall(sql);
            cst.setString(1, oUsu.getIdusua());
            cst.setString(2, oUsu.getNombusu());
            cst.setString(3, oUsu.getPassusu());
            cst.setString(4,oUsu.getEstausu());
            cst.execute();
            
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
     }
    
    public void desactivar(String idUsu){
    try{
        String sql="{call spdes_Usuario(?)}";
        CallableStatement cst=oConexion.getConnection().prepareCall(sql);
        cst.setString(1,idUsu);
        cst.execute();
    }catch(SQLException ex){
        JOptionPane.showMessageDialog(null, ex.getMessage());
    }
         
    }
   
}
